35|自动化攻防:低代码驱动的渗透工具积累

你好,我是王昊天。
在之前的课程中,我们学习了一些 Web 漏洞挖掘的基础知识,这为我们打下了良好的基础。其实在 Web 攻防中,还有一个很重要的部分,那就是渗透测试,它就是我们发现 Web 漏洞的一般方式。
其中,在渗透测试时,我们一般需要用到很多网络安全工具,这通常是一个麻烦的问题,因为我们每使用一个网络安全工具都需要获取并学习它,之后再次使用它时还需要注意版本有无更新。不过你不用担心,我已经为你解决了这个问题,潮汐社区版已经集成了所有常见的网络安全工具,并且会定期更新它们的版本以供你使用。
今天,让我们结合潮汐社区版一起来学习渗透测试基础吧!

渗透测试基础

渗透测试是指安全从业人员对某一网络系统模拟黑客入侵进行攻击,旨在发现网络系统中的不安全因素并进行及时修补。
它主要是从 Web 页面入侵到服务器主机,再从服务器主机渗透到域内环境的一个过程,而从 Web 到服务器的入侵也就是渗透测试的基础
一般来说,渗透测试基础可以分为四个方面,它们分别为目标确认、信息搜集、漏洞发现以及漏洞利用。
首先,我们来学习渗透测试基础的第一个内容——目标确认。

目标确认

渗透测试的开始,需要我们明确自己着手的目标。
一般我们会有待攻击 Web 页面的 URL 链接,在目标确认阶段,我们需要根据这个链接获取到 Web 应用的真实 IP 地址以及存活子域的信息。接下来,让我们来学习如何获取网页的真实 IP。

IP 地址获取

当我们知道一个网站的网址时,通过直接 ping 的方式,可以返回一个 IP 信息,但是我们大概率无法得到网站源服务器的真实 IP。这是因为部分网站会使用 CDN 技术将自己的源站真实 IP 隐藏起来,该技术会通过使用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,当用户访问网络时,由这些缓存服务器直接响应用户请求。
为了让你更好地理解获取 IP 的方式,下面我们一起看一个示例。
ping www.mituan.zone
PING www.mituan.zone (54.222.162.186): 56 data bytes
64 bytes from 54.222.162.186: icmp_seq=0 ttl=48 time=27.061 ms
64 bytes from 54.222.162.186: icmp_seq=1 ttl=48 time=29.629 ms
在这个示例中,我们通过 ping 命令来获取谜团域名的 IP 地址,那么我们如何知道它是真实的源站 IP 还是一个 CDN 地址呢?
这时,我们就可以用到 CDN 检测工具——morePing,来简单检测目标网站是否使用了 CDN 技术,morePing 是基于 Python 去调用 API 接口来高速批量多地 Ping 来检测资产 CDN 归属的工具。
我们已经将它集成在了潮汐社区版 lev.zone 之中,你可以在注册登录之后,搜索 moreping 对它进行使用。注意,在注册过程中需要用到邀请码,你使用 VefMiMj7N37tHDL7 即可,不过它仅可支持有限个用户使用。
点开 moreping 编排,我们可以看到该编排的描述信息及使用说明。点击新建任务,我们可以看到如下配置页面:
我们可以在这个页面输入想设置的任务名称例如 moreping,然后选择一个调用方式,这里我们用快速模式就可以了。最后我们输入 domain 信息即可,点击提交,任务就开始运行了。
{'host': 'www.mituan.zone', 'isCdn': False, 'ip': {'54.222.162.186'}}
运行结束之后,我们可以获得如上信息,在该信息的 isCdn 字段,我们可以获取到该 IP 是否属于 CDN,这样我们就能分辨出真实的 IP 信息。
到这里,我们已经知道了如何获取待攻击页面的 IP 信息,下一步让我们进入到信息搜集阶段。

信息搜集

信息搜集对于渗透测试是不可或缺的一部分。
信息搜集的好坏与多少将一定程度上导致这次渗透任务的结果优劣,不论是网站暴露出的信息还是通过安全人员发掘出来的信息,都有为后续步骤创造机遇,为找到突破创造可能。
下面,让我们学习一款典型的信息搜集工具——Nmap。

Nmap 服务器信息扫描

Nmap 是一个用于网络发现和安全审计的免费开源程序,用于网络扫描、服务升级计划管理以及主机或服务正常运行时间监控等任务。我们可以利用 Nmap 对服务器开放的端口、使用协议、提供服务、操作系统类型来一次全方位的扫描。
在目标确认阶段,我们获取到了 www.mituan.com 的真实 IP 地址 54.222.162.186,我们就对它继续进行下一步的信息扫描操作。
在潮汐社区版的市场中搜索 Nmap,然后点击新建任务并选择 port_os - nmap SYN 模式,输入谜团的 IP 地址,开始扫描目标主机开放端口、主机名及操作系统。
获取到的输出信息如上所示,我们可以获取到谜团服务器的开放端口信息。下面,让我们进入到漏洞发现阶段。

漏洞发现

在信息搜集阶段,我们可以发现谜团服务器的 80 端口运行着 HTTP 服务。
事实上,该服务对应的是谜团 Web 应用,但这里为了演示更方便,我们假设该服务对应着谜团中的 DVWA SQL Injection 靶场,并对其发起攻击。
我们首先开启谜团中的一个 DVWA 靶场,登录后选择其中的 SQL Injection 实例。之后,我们就可以对它进行漏洞发现。

sqlmap 漏洞发现工具

我们很容易知道,这是一个 SQL 注入靶场,这样我们就可以使用潮汐社区版中的 sqlmap SQL 注入工具对它进行漏洞发现。
注意,由于 DVWA 靶场需要登录才可以访问,所以我们需要在 cmd 中输入 cookie 信息,所以它的输入应该与下方示例类似:
-u "http://1808d3f4e0bc4d8092ee9b26ad607e5a.app.mituan.zone/vulnerabilities/sqli/?id=chaoxi&Submit=Submit#" --cookie="PHPSESSID=phkop4mdpap307foab1e3veg91; security=low"
完成配置之后,我们就可以点击提交,运行我们的 sqlmap SQL 注入检测工具,等待任务完成之后可以获得如下结果:
从输出中,我们可以看到生效的 payload 信息,从而判定出该 Web 应用存在 SQL 注入问题。
到这里,我们已经完成了渗透测试基础中的漏洞发现阶段,接下来,让我们开始学习漏洞利用的方式。

漏洞利用

当我们在漏洞发现阶段找到漏洞之后,我们就可以使用漏洞利用工具对 Web 应用进行攻击。
这里将用到谜团靶场中的,专题·极客时间课程系列 Tomcat CVE-2017-12615 靶场进行漏洞利用的演示,所以我们需要打开谜团,运行 Tomcat CVE-2017-12615 靶场。
从页面中,我们可以知道它使用的服务器版本为 Apache Tomcat/8.5.19,于是,我们可以打开潮汐社区版中的工具 exploitdb,这个工具可以根据关键词搜索相关的漏洞利用方式
我们选择 simple 模式的快速模式,输入 tomcat8.5.19,然后点击提交,任务就开始运行了。
运行完成之后,我们可以看到如下返回信息,这代表我们可以在链接 https://www.exploit-db.com/exploits/42966 中获取到漏洞利用工具。
访问这一地址后,我们下载其中的 Exploit 工具,获取到一个 Python 文件 42966.py。
由于不知道它的用法,我们下载来之后运行命令 python3 42966.py,获取到它的使用方式如下:
options:
-u ,--url [::] check target url if it's vulnerable
-p,--pwn [::] generate webshell and upload it
-l,--list [::] hosts list
从使用方式中,我们发现需要使用 -u 参数来指定攻击的 Web 链接,而使用 -p 参数则可以反弹 shell。
于是我们将 Tomcat 靶场的地址作为参数,执行如下命令:
python3 42966.py -u http://ab41e0726b9747ef851288e1bfea3682.app.mituan.zone:8080/ -p
发现弹出了 shell,攻击成功。
到这里,我们就完成了渗透测试基础的四个步骤,在学习的过程中我们多次用到潮汐开源社区中的工具,你可能对于潮汐开源社区还是比较陌生,接下来我来给你们介绍它的功能,确保你在使用起来更加得心应手。

潮汐开源社区

潮汐开源社区是一个安全工具合集平台,里面包含了几乎所有常见的安全工具,供我们在线使用,这解决了我们安装及维护安全工具的问题。
同时,它还给我们提供了大量的编排,所谓编排就是一个或多个软件的不同使用方式的结合,例如在渗透测试基础中,我们可以利用 moreping 以及 Nmap 工具结合起来,实现对于待攻击应用的服务探测。
作为潮汐开源社区的用户,我们不仅可以使用其中集成好了的工具,还可以自己写一些编排,供其他用户使用。

总结

在这一讲中,我们学习了渗透测试基础相关的知识。
首先,我们知道了渗透测试可以分为四个部分,即目标确认、信息搜集、漏洞发现以及漏洞利用。
在对目标确认的过程中,我们调用了潮汐开源社区的 moreping 软件,它可以帮助我们判断 url 对应的 IP 信息是否是真实源 IP。
当确认好目标的 IP 信息后,我们就进入到信息搜集阶段,在这个阶段,我们使用了潮汐开源社区的 Nmap 软件,它可以帮助我们判断一个 IP 开启的服务类型及协议信息。
然后,我们就进入到漏洞发现阶段,在这个阶段里,我们使用了潮汐开源社区的 sqlmap 工具,对一个 Web 页面进行检测,根据工具运行的结果,我们成功判断出了这个页面存在 SQL 注入漏洞。
最后,我们进入到漏洞利用阶段,在这个阶段,我们使用了 exploitdb 工具,查询到了 tomcat8.5.19 中的漏洞,然后下载漏洞利用脚本,成功发起了攻击行为。

思考题

你认为在渗透测试基础的四个部分中,哪一部分最重要?
欢迎在评论区留下你的思考。如果觉得今天的内容对你有所帮助的话,也欢迎你把课程分享给其他同事或朋友,我们共同学习进步!
上一篇
34|Crawler VS Fuzzing:DAST与机器学习
下一篇
36|智能攻防:构建个性化攻防平台